package com.yjd.comm.recharge.service;

import java.util.Map;

import com.yjd.comm.base.model.PagerModel;
import com.yjd.comm.base.service.IBaseService;
import com.yjd.comm.enums.VoucherEnums.VoucherStatus;
import com.yjd.comm.enums.VoucherEnums.VoucherType;
import com.yjd.comm.recharge.dto.VolumeDto;
import com.yjd.comm.recharge.model.VolumeModel;

/**
 * <b>description</b>：充值券业务接口<br>
 * <b>time</b>：2014-11-12 09:43:21 <br>
 * <b>author</b>： renbangjie_vip@163.com
 */
public interface IVolumeService extends IBaseService {
	/**
	 * 插入
	 * 
	 * @param model
	 * @return
	 * @throws Exception
	 */
	public VolumeModel insert(VolumeModel model) throws Exception;

	/**
	 * 更新,大于等于1表示成功，其他失败
	 * 
	 * @param model
	 * @return
	 * @throws Exception
	 */
	public int update(VolumeModel model) throws Exception;

	/**
	 * 根据id删除,大于等于1表示成功，其他失败
	 * 
	 * @param id
	 * @return
	 * @throws Exception
	 */
	public int delete(Long id) throws Exception;

	/**
	 * 查询充值券
	 * 
	 * @param voucherNo
	 *            券码
	 * @param type
	 *            充值券类型
	 * @param status
	 *            充值券状态
	 * @return VolumeModel
	 */
	public VolumeModel getEnableVolumeModel(String voucherNo, VoucherType type);

	/**
	 * 查询充值券明细
	 * 
	 * @param paramMap
	 * @return PagerModel
	 * @throws Exception
	 */
	public PagerModel getVolumePagerModel(Map paramMap) throws Exception;

	
	/**
	 * 生成优惠券
	* @param event_id 所属活动
	* @param type 卡券类型
	* @param starttime 开始时间
	* @param endtime 结束时间
	* @param direct_amount 代金券面值
	* @param return_amount 理财金面值
	* @param name 流向
	* @param count 数量
	* @return boolean
	 * @throws Exception 
	 */
	public boolean generateVoucher(Integer event_id, Integer type,
			Long starttime, Long endtime, Double direct_amount, Double return_amount, String name,
			Integer count, Integer idTask) throws Exception;
	
	
	/**
	 * 生成代金券
	* @param price_return 返现金额
	* @param price_direct 直达金额
	* @param duration 有效时长(结束日期)
	* @param idUser 用户ID
	* @param idTask 任务编号
	* @param status 代金券状态 0：未激活 1：已激活
	* @param event_id 事件
	* @return duration
	 * @throws Exception 
	 */
	public VolumeModel generateVoucher(double price_return, double price_direct,
			long duration, Long idUser, Integer status, Integer event_id, Integer idTask, String memo) throws Exception;
	
	
	/**
	 * 生成id
	* @return Long
	 */
	public String generateNumber(Long base);
	
	/**
	 * 获得最大id
	* @return Long
	 */
	public Long getMaxID();
	
	/**
	 * 更新充值券流向
	* @param start
	* @param end
	* @param name
	* @return boolean
	 */
	public boolean updatedistrict(Integer start, Integer end, String name); 
	
	

}
